package com.warehouse.util;

import java.util.HashMap;
import java.util.Map;

/**
 * 箱数量转换工具类
 */
public class BoxQuantityUtil {
    
    /**
     * 将总数量转换为箱和瓶的显示格式
     * @param totalQuantity 总数量
     * @param boxQuantity 一箱包含的数量
     * @param boxUnit 箱的单位
     * @param unit 单个商品单位
     * @return 格式化的显示字符串
     */
    public static String formatBoxQuantity(int totalQuantity, int boxQuantity, String boxUnit, String unit) {
        if (boxQuantity <= 0) {
            return totalQuantity + unit;
        }
        
        int boxes = totalQuantity / boxQuantity;
        int remaining = totalQuantity % boxQuantity;
        
        StringBuilder result = new StringBuilder();
        
        if (boxes > 0) {
            result.append(boxes).append(boxUnit);
        }
        
        if (remaining > 0) {
            if (boxes > 0) {
                result.append(remaining).append(unit);
            } else {
                result.append(remaining).append(unit);
            }
        }
        
        return result.toString();
    }
    
    /**
     * 将总数量转换为箱和瓶的详细信息
     * @param totalQuantity 总数量
     * @param boxQuantity 一箱包含的数量
     * @return 包含箱数和瓶数的Map
     */
    public static Map<String, Integer> getBoxAndRemaining(int totalQuantity, int boxQuantity) {
        Map<String, Integer> result = new HashMap<>();
        
        if (boxQuantity <= 0) {
            result.put("boxes", 0);
            result.put("remaining", totalQuantity);
            return result;
        }
        
        int boxes = totalQuantity / boxQuantity;
        int remaining = totalQuantity % boxQuantity;
        
        result.put("boxes", boxes);
        result.put("remaining", remaining);
        
        return result;
    }
    
    /**
     * 计算箱数
     * @param totalQuantity 总数量
     * @param boxQuantity 一箱包含的数量
     * @return 箱数
     */
    public static int getBoxCount(int totalQuantity, int boxQuantity) {
        if (boxQuantity <= 0) {
            return 0;
        }
        return totalQuantity / boxQuantity;
    }
    
    /**
     * 计算剩余数量
     * @param totalQuantity 总数量
     * @param boxQuantity 一箱包含的数量
     * @return 剩余数量
     */
    public static int getRemainingCount(int totalQuantity, int boxQuantity) {
        if (boxQuantity <= 0) {
            return totalQuantity;
        }
        return totalQuantity % boxQuantity;
    }
} 